<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from modlib.tnf on 19 December 2010 -->

<TITLE>Introduction of specification modules - Table of Contents</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<A HREF="modlib.pdf"><IMG SRC="gifs/pdficon_large.gif" ALT="Open PDF File" BORDER="0" ALIGN=RIGHT></A>
<H1>Introduction of specification modules</H1>
<A NAME="IDX1"></A>
<P>
Eli provides a library of specification modules. Each module contains a
complete set of specifications that solve a single common task in language
implementation. If such a task is identified in the design of an
application specification, the module is simply
added to the application specification and used there.
Most modules solve a rather small task. They can be flexibly combined
to solve more complex problems.
<P>
<UL>
<LI>
 <A HREF="modlib_1.html#SEC1">Introduction of a running example</A>
<LI>
 <A HREF="modlib_2.html#SEC2">How to use Specification Modules</A>
<LI>
 <A HREF="name_toc.html">Name analysis according to scope rules</A>
<LI>
 <A HREF="prop_toc.html">Association of properties to definitions</A>
<LI>
 <A HREF="type_toc.html">Type analysis tasks</A>
<LI>
 <A HREF="input_toc.html">Tasks related to input processing</A>
<LI>
 <A HREF="output_toc.html">Tasks related to generating output</A>
<LI>
 <A HREF="adt_toc.html">Abstract data types to be used in specifications</A>
<LI>
 <A HREF="problems_toc.html">Solutions of common problems</A>
<LI>
 <A HREF="oldmod_toc.html">Migration of Old Library Module Usage</A>
</UL>
<P>
The first section introduces an example that is referred to
in the other sections to explain the use of modules in the context
of a language implementation task. The second section explains
how modules are obtained from the library and are related
to users' specifications. The remaining sections describe
sublibraries for a certain problem class each.
<P>
The section  <A HREF="oldmod_toc.html">Name Analysis Library of Name Analysis Library</A>, is a quick reference that helps
to migrate specifications using modules of previous versions
of this library.
<P>
This document may be used according to different strategies:
In order to become familiar with problem solving by using library
modules one can start with the running example of section  <A HREF="modlib_1.html#SEC1">Running Example</A>, and
extend it as described in the subsequent chapters.
One can also start with a particular problem in mind and then
search the corresponding chapter for a module that could be
used to solve it. The document can also be used as a reference manual
for the library modules. 
In any case it is recommended to read the introduction
of a chapter before using one of its modules.
<P>
The modules solve their task by providing specification fragments
to one or more Eli tools: Some are simply a C module, others
contain <CODE>.lido</CODE>, <CODE>.pdl</CODE>, <CODE>.ptg</CODE>, or references
to other library modules. The modules are designed such that
as few assumptions as possible have to hold in the user's part
of the specification where they are applied. E.g. <CODE>.lido</CODE>
fragments supplied by library modules are mapped to the particular
grammar of the user's specification by the inheritance construct of LIDO.
Modules described in the  <A HREF="adt_toc.html">Abstract Data Types of Abstract data types to be used in specifications</A>, section may also be used
directly in C modules or in stand-alone C programs.
<P>
Most modules in the library are generic, i.e. the names used in a
module can be modified by its instantiation. This facility allows to
use the same module for different purposes, e.g. a counter for
variables and another for procedures, or specify the element type of
a generic list type implementation. Instantiations also control the
combination of modules, e.g. association of properties to procedures and
to variables which might have different name spaces.
<A NAME="IDX2"></A>
<A NAME="IDX3"></A>
<A NAME="IDX4"></A>
<P>
This document describes the task that each module solves, its interface,
and how it can be applied in a user's specification. The descriptions
are illustrated using a running example introduced in the next section
(see  <A HREF="modlib_1.html#SEC1">Running Example</A>).
Complete executable specifications for that running example
are available in the directories <CODE>$/Name/Examples</CODE>
and in <CODE>$/Type/Examples</CODE>.
In general that information should be sufficient to use the modules.
A look at the module's text may help in special cases.
<P>
Users are encouraged to apply this design technique of decomposition
into specification modules to their application as well. The structure
of complex designs and their maintainability can thus be improved. The
resulting modules may be reused in other applications.
The techniques needed to instantiate user developed modules
are described in  <A HREF="modlib_2.html#SEC2">Instantiation and Use of Modules</A>.
<P>
This library will be extended by adding further modules that solve
common tasks. Hence, users are encouraged to contact their Eli 
distributor if a module for a task
that might be of general interest is missing, or if a solution for
such a task can be contributed.
<P>
<P>
<UL>
<LI><A NAME="SEC1" HREF="modlib_1.html#SEC1">Running Example</A>
<LI><A NAME="SEC2" HREF="modlib_2.html#SEC2">Instantiation and Use of Modules</A>
</UL>
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
